QTI mdss-dsi-panel

mdss-dsi-panel is a dsi panel device which supports panels that
are compatible with MIPI display serial interface specification.

Required properties:
- compatible:				This property applies to DSI V2 panels only.
					This property should not be added for panels
					that work based on version "V6.0"
					DSI panels that are of different versions
					are initialized by the drivers for dsi controller.
					This property specifies the version
					for DSI HW that this panel will work with
					"qcom,dsi-panel-v2" = DSI V2.0
- status:        			This property applies to DSI V2 panels only.
					This property should not be added for panels
					that work based on version "V6.0"
					DSI panels that are of different versions
					are initialized by the drivers for dsi controller.
					A string that has to be set to "okay/ok"
					to enable the panel driver. By default this property
					will be set to "disable". Will be set to "ok/okay"
					status for specific platforms.
- qcom,mdss-dsi-panel-controller:	Specifies the phandle for the DSI controller that
					this panel will be mapped to.
- qcom,mdss-dsi-panel-width:		Specifies panel width in pixels.
- qcom,mdss-dsi-panel-height:		Specifies panel height in pixels.
- qcom,mdss-dsi-bpp:			Specifies the panel bits per pixel.
					3  = for rgb111
					8  = for rgb332
					12 = for rgb444
					16 = for rgb565
					18 = for rgb666
					24 = for rgb888
- qcom,mdss-dsi-panel-destination:	A string that specifies the destination display for the panel.
					"display_1" = DISPLAY_1
					"display_2" = DISPLAY_2
- qcom,mdss-dsi-panel-timings:		An array of length 12 that specifies the PHY
					timing settings for the panel.
- qcom,mdss-dsi-panel-timings-8996:		An array of length 40 char that specifies the 8996 PHY lane
					timing settings for the panel.
- qcom,mdss-dsi-on-command:		A byte stream formed by multiple dcs packets base on
					qcom dsi controller protocol.
					byte 0: dcs data type
					byte 1: set to indicate this is an individual packet
						 (no chain)
					byte 2: virtual channel number
					byte 3: expect ack from client (dcs read command)
					byte 4: wait number of specified ms after dcs command
						 transmitted
					byte 5, 6: 16 bits length in network byte order
					byte 7 and beyond: number byte of payload
- qcom,mdss-dsi-off-command:		A byte stream formed by multiple dcs packets base on
					qcom dsi controller protocol.
					byte 0: dcs data type
					byte 1: set to indicate this is an individual packet
						 (no chain)
					byte 2: virtual channel number
					byte 3: expect ack from client (dcs read command)
					byte 4: wait number of specified ms after dcs command
						 transmitted
					byte 5, 6: 16 bits length in network byte order
					byte 7 and beyond: number byte of payload
- qcom,mdss-dsi-post-panel-on-command:	same as "qcom,mdss-dsi-on-command" except commands are
					sent after displaying an image.

Note, if a short DCS packet(i.e packet with Byte 0:dcs data type as 05) mentioned in
qcom,mdss-dsi-on-command/qcom,mdss-dsi-off-command stream fails to transmit,
then 3 options can be tried.
	1. Send the packet as a long packet instead
				Byte 0: dcs data type = 05 (DCS short Packet)
				Byte 0: dcs data type = 29 (DCS long Packet)
	2. Send the packet in one burst by prepending with the next packet in packet stream
				Byte 1 = 01 (indicates this is an individual packet)
				Byte 1 = 00 (indicates this will be appended to the next
					     individual packet in the packet stream)
	3. Prepend a NULL packet to the short packet and send both in one burst instead of
	   combining multiple short packets and sending them in one burst.

Optional properties:
- qcom,mdss-dsi-panel-name:		A string used as a descriptive name of the panel
- qcom,mdss-dsi-physical-type:		A string used as a decriptive type of the panel.
						"oled" : That indicate it's an OLED panel.
						"lcd" : That indicate it's an LCD panel.
						If it is not set, consider it is a LCD panel as default.
- qcom,mdss-dsi-panel-phy-timings:	An array of length 'n' char that specifies the DSI PHY lane
					timing settings for the panel. This is specific to SDE DRM driver.
					The value of 'n' depends on the DSI PHY h/w revision and parsing this
					property properly will be taken care in the DSI PHY DRM driver.
- qcom,cmd-sync-wait-broadcast:		Boolean used to broadcast dcs command to panels.
- qcom,mdss-dsi-fbc-enable:		Boolean used to enable frame buffer compression mode.
- qcom,mdss-dsi-panel-mode-switch:	Boolean used to enable panel operating mode switch.
- qcom,mdss-dsi-fbc-slice-height:	Slice height(in lines) of compressed block.
					Expressed as power of 2. To set as 128 lines,
					this should be set to 7.
- qcom,mdss-dsi-fbc-2d-pred-mode:	Boolean to enable 2D map prediction.
- qcom,mdss-dsi-fbc-ver2-mode:		Boolean to enable FBC 2.0 that supports 1/3
					compression.
- qcom,mdss-dsi-fbc-bpp:		Compressed bpp supported by the panel.
					Specified color order is used as default value.
- qcom,mdss-dsi-fbc-packing:		Component packing.
					0 = default value.
- qcom,mdss-dsi-fbc-quant-error:	Boolean used to enable quantization error calculation.
- qcom,mdss-dsi-fbc-bias:		Bias for CD.
					0 = default value.
- qcom,mdss-dsi-fbc-pat-mode:		Boolean used to enable PAT mode.
- qcom,mdss-dsi-fbc-vlc-mode:		Boolean used to enable VLC mode.
- qcom,mdss-dsi-fbc-bflc-mode:		Boolean used to enable BFLC mode.
- qcom,mdss-dsi-fbc-h-line-budget:	Per line extra budget.
					0 = default value.
- qcom,mdss-dsi-fbc-budget-ctrl:		Extra budget level.
					0 = default value.
- qcom,mdss-dsi-fbc-block-budget:		Per block budget.
					0 = default value.
- qcom,mdss-dsi-fbc-lossless-threshold: Lossless mode threshold.
					0 = default value.
- qcom,mdss-dsi-fbc-lossy-threshold:	Lossy mode threshold.
					0 = default value.
- qcom,mdss-dsi-fbc-rgb-threshold:	Lossy RGB threshold.
					0 = default value.
- qcom,mdss-dsi-fbc-lossy-mode-idx:	Lossy mode index value.
					0 = default value.
- qcom,mdss-dsi-fbc-max-pred-err:	Max quantization prediction error.
					0 = default value
- qcom,mdss-dsi-h-back-porch:		Horizontal back porch value in pixel.
					6 = default value.
- qcom,mdss-dsi-h-front-porch:		Horizontal front porch value in pixel.
					6 = default value.
- qcom,mdss-dsi-h-pulse-width:		Horizontal pulse width.
					2 = default value.
- qcom,mdss-dsi-h-sync-skew:		Horizontal sync skew value.
					0 = default value.
- qcom,mdss-dsi-v-back-porch:		Vertical back porch value in pixel.
					6 = default value.
- qcom,mdss-dsi-v-front-porch:		Vertical front porch value in pixel.
					6 = default value.
- qcom,mdss-dsi-v-pulse-width:		Vertical pulse width.
					2 = default value.
- qcom,mdss-dsi-h-left-border:		Horizontal left border in pixel.
					0 = default value
- qcom,mdss-dsi-h-right-border:		Horizontal right border in pixel.
					0 = default value
- qcom,mdss-dsi-v-top-border:		Vertical top border in pixel.
					0 = default value
- qcom,mdss-dsi-v-bottom-border:	Vertical bottom border in pixel.
					0 = default value
- qcom,mdss-dsi-underflow-color:	Specifies the controller settings for the
					panel under flow color.
					0xff = default value.
- qcom,mdss-dsi-border-color:		Defines the border color value if border is present.
					0 = default value.
- qcom,mdss-dsi-panel-jitter:		Panel jitter value is expressed in terms of numerator
					and denominator. It contains two u32 values - numerator
					followed by denominator. The jitter configurition causes
					the early wakeup if panel needs to adjust before vsync.
					Default jitter value is 2.0%. Max allowed value is 10%.
- qcom,mdss-dsi-panel-prefill-lines:	An integer value defines the panel prefill lines required to
					calculate the backoff time of rsc.
					Default value is 16 lines. Max allowed value is vtotal.
- qcom,mdss-dsi-pan-enable-dynamic-fps:	Boolean used to enable change in frame rate dynamically.
- qcom,mdss-dsi-pan-fps-update:		A string that specifies when to change the frame rate.
					"dfps_suspend_resume_mode"= FPS change request is
					implemented during suspend/resume.
					"dfps_immediate_clk_mode" = FPS change request is
					implemented immediately using DSI clocks.
					"dfps_immediate_porch_mode_hfp" = FPS change request is
					implemented immediately by changing panel horizontal
					front porch values.
					"dfps_immediate_porch_mode_vfp" = FPS change request is
					implemented immediately by changing panel vertical
					front porch values.
- qcom,dsi-supported-dfps-list:	List containing all the supported refresh rates.
- qcom,dsi-supported-qsync-min-fps-list:	The fps value in this list indicates the qsync min
					fps corresponding to the mode in the qcom,dsi-supported-dfps-list
					with same index. qcom,dsi-supported-qsync-min-fps-list cannot be
					defined along with qcom,mdss-dsi-qsync-min-refresh-rate.
- qcom,min-refresh-rate:		Minimum refresh rate supported by the panel.
- qcom,max-refresh-rate:		Maximum refresh rate supported by the panel. If max refresh
					rate is not specified, then the frame rate of the panel in
					qcom,mdss-dsi-panel-framerate is used.
- qcom,dsi-dyn-clk-enable:		Boolean to indicate dsi dynamic clock switch feature
					is supported.
- qcom,dsi-dyn-clk-list:		An u32 array which lists all the supported dsi bit clock
					frequencies in Hz for the given panel.
- qcom,dsi-dyn-clk-type:		A string that specifies the sub-type for the dynamic
					clk feature. If dyn clk type is not specified, default
					value "legacy" is used.
					"legacy" = FPS is not maintained after dynamic clock switch.
					"constant-fps-adjust-hfp" = FPS is maintained even after
					dynamic clock switch by changing panel horizontal front
					porch values.
					"constant-fps-adjust-vfp" = FPS is maintained even after
					dynamic clock switch by changing panel vertical front
					porch values.
					This dyn-clk-type entry is an optional binding which is
                                        contingent on the enabling of dynamic clock switch.
- qcom,mdss-dsi-bl-pmic-control-type:	A string that specifies the implementation of backlight
					control for this panel.
					"bl_ctrl_pwm" = Backlight controlled by PWM gpio.
					"bl_ctrl_wled" = Backlight controlled by WLED.
					"bl_ctrl_dcs" = Backlight controlled by DCS commands.
					"bl_ctrl_external" = Backlight controlled by externally
					other: Unknown backlight control. (default)
- qcom,mdss-dsi-sec-bl-pmic-control-type: A string that specifies the implementation of backlight
					  control for secondary panel.
					  "bl_ctrl_pwm" = Backlight controlled by PWM gpio.
                                          "bl_ctrl_wled" = Backlight controlled by WLED.
                                          "bl_ctrl_dcs" = Backlight controlled by DCS commands.
                                          "bl_ctrl_external" = Backlight controlled by externally
                                          other: Unknown backlight control. (default)
- qcom,mdss-dsi-bl-pwm-pmi:		Boolean to indicate that PWM control is through second pmic chip.
- qcom,mdss-dsi-bl-pmic-bank-select:	LPG channel for backlight.
					Required if backlight pmic control type is PWM
- qcom,mdss-dsi-bl-pmic-pwm-frequency:	PWM period in microseconds.
					Required if backlight pmic control type is PWM
- qcom,mdss-dsi-pwm-gpio:		PMIC gpio binding to backlight.
					Required if backlight pmic control type is PWM
- qcom,mdss-dsi-bl-min-level:		Specifies the min backlight level supported by the panel.
					0 = default value.
- qcom,mdss-dsi-bl-max-level:		Specifies the max backlight level supported by the panel.
					255 = default value.
- qcom,mdss-dsi-bl-inverted-dbv:	A boolean to specify whether to invert the display brightness value.
					When this boolean is set, will inverted display brightness value.
- qcom,mdss-brightness-max-level:	Specifies the max brightness level supported.
					255 = default value.
- qcom,bl-update-flag:			A string that specifies controls for backlight update of the panel.
					"delay_until_first_frame" = Delay backlight update of the panel
					until the first frame is received from the HW.
- qcom,mdss-dsi-interleave-mode:	Specifies interleave mode.
					0 = default value.
- qcom,mdss-dsi-panel-type:		Specifies the panel operating mode.
					"dsi_video_mode" = enable video mode (default).
					"dsi_cmd_mode" = enable command mode.
- qcom,5v-boost-gpio:			Specifies the panel gpio for display 5v boost.
- qcom,mdss-dsi-te-check-enable:	Boolean to enable Tear Check configuration.
- qcom,mdss-dsi-te-using-wd:		Boolean entry enables the watchdog timer support to generate the vsync signal
					for command mode panel. By default, panel TE will be used to generate the vsync.
- qcom,mdss-dsi-te-using-te-pin:	Boolean to specify whether using hardware vsync.
- qcom,mdss-dsi-qsync-min-refresh-rate: A u32 entry to specify minimum refresh rate supported by the panel to enable qsync feature.
- qcom,mdss-dsi-qsync-on-commands:	String that specifies the commands to enable qsync feature.
- qcom,mdss-dsi-qsync-on-commands-state: String that specifies the ctrl state for sending qsync on commands.
					"dsi_lp_mode" = DSI low power mode (default)
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-qsync-off-commands:	String that specifies the commands to disable qsync feature.
- qcom,mdss-dsi-qsync-off-commands-state: String that specifies the ctrl state for sending qsync off commands.
					"dsi_lp_mode" = DSI low power mode (default)
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-te-pin-select:		Specifies TE operating mode.
					0 = TE through embedded dcs command
					1 = TE through TE gpio pin. (default)
- qcom,mdss-dsi-te-dcs-command:		Inserts the dcs command.
					1 = default value.
- qcom,mdss-dsi-wr-mem-start:		DCS command for write_memory_start.
					0x2c = default value.
- qcom,mdss-dsi-wr-mem-continue:	DCS command for write_memory_continue.
					0x3c = default value.
- qcom,mdss-dsi-h-sync-pulse:		Specifies the pulse mode option for the panel.
					0 = Don't send hsa/he following vs/ve packet(default)
					1 = Send hsa/he following vs/ve packet
- qcom,mdss-dsi-hfp-power-mode:		Boolean to determine DSI lane state during
					horizontal front porch (HFP) blanking period.
- qcom,mdss-dsi-hbp-power-mode:		Boolean to determine DSI lane state during
					horizontal back porch (HBP) blanking period.
- qcom,mdss-dsi-hsa-power-mode:		Boolean to determine DSI lane state during
					horizontal sync active (HSA) mode.
- qcom,mdss-dsi-last-line-interleave	Boolean to determine if last line
					interleave flag needs to be enabled.
- qcom,mdss-dsi-bllp-eof-power-mode:	Boolean to determine DSI lane state during
					blanking low power period (BLLP) EOF mode.
- qcom,mdss-dsi-bllp-power-mode:	Boolean to determine DSI lane state during
					blanking low power period (BLLP) mode.
- qcom,mdss-dsi-traffic-mode:		Specifies the panel traffic mode.
					"non_burst_sync_pulse" = non burst with sync pulses (default).
					"non_burst_sync_event" = non burst with sync start event.
					"burst_mode" = burst mode.
- qcom,mdss-dsi-pixel-packing:		Specifies if pixel packing is used (in case of RGB666).
					"tight" = Tight packing (default value).
					"loose" = Loose packing.
- qcom,mdss-dsi-virtual-channel-id:	Specifies the virtual channel identefier.
					0 = default value.
- qcom,mdss-dsi-color-order:		Specifies the R, G and B channel ordering.
					"rgb_swap_rgb" = DSI_RGB_SWAP_RGB (default value)
					"rgb_swap_rbg" = DSI_RGB_SWAP_RBG
					"rgb_swap_brg" = DSI_RGB_SWAP_BRG
					"rgb_swap_grb" = DSI_RGB_SWAP_GRB
					"rgb_swap_gbr" = DSI_RGB_SWAP_GBR
- qcom,mdss-dsi-lane-0-state:		Boolean that specifies whether data lane 0 is enabled.
- qcom,mdss-dsi-lane-1-state:		Boolean that specifies whether data lane 1 is enabled.
- qcom,mdss-dsi-lane-2-state:		Boolean that specifies whether data lane 2 is enabled.
- qcom,mdss-dsi-lane-3-state:		Boolean that specifies whether data lane 3 is enabled.
- qcom,mdss-dsi-t-clk-post:		Specifies the byte clock cycles after mode switch.
					0x00 = default value.
- qcom,mdss-dsi-t-clk-pre:		Specifies the byte clock cycles before mode switch.
					0x00 = default value.
- qcom,mdss-dsi-t-clk-pre-extend:	Boolean that specifies whether to enable t_clk_pre counter
					increment by 2 byteclk.
- qcom,mdss-dsi-stream:			Specifies the packet stream to be used.
					0 = stream 0 (default)
					1 = stream 1
- qcom,mdss-dsi-mdp-trigger:		Specifies the trigger mechanism to be used for MDP path.
					"none" = no trigger
					"trigger_te" = Tear check signal line used for trigger
					"trigger_sw" = Triggered by software (default)
					"trigger_sw_te" = Software trigger and TE
- qcom,mdss-dsi-dma-trigger:		Specifies the trigger mechanism to be used for DMA path.
					"none" = no trigger
					"trigger_te" = Tear check signal line used for trigger
					"trigger_sw" = Triggered by software (default)
					"trigger_sw_seof" = Software trigger and start/end of frame trigger.
					"trigger_sw_te" = Software trigger and TE
- qcom,mdss-dsi-panel-framerate:	Specifies the frame rate for the panel.
					60 = 60 frames per second (default)
- qcom,mdss-dsi-panel-clockrate:	A 64 bit value specifies the panel clock speed in Hz.
					0 = default value.
- qcom,mdss-mdp-transfer-time-us:	Specifies the dsi transfer time for command mode
					panels in microseconds. Driver uses this number to adjust
					the clock rate according to the expected transfer time.
					Increasing this value would slow down the mdp processing
					and can result in slower performance.
					Decreasing this value can speed up the mdp processing,
					but this can also impact power consumption.
					As a rule this time should not be higher than the time
					that would be expected with the processing at the
					dsi link rate since anyways this would be the maximum
					transfer time that could be achieved.
					If ping pong split enabled, this time should not be higher
					than two times the dsi link rate time.
					14000 = default value.
- qcom,mdss-dsi-on-command-state:	String that specifies the ctrl state for sending ON commands.
					"dsi_lp_mode" = DSI low power mode (default)
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-off-command-state:	String that specifies the ctrl state for sending OFF commands.
					"dsi_lp_mode" = DSI low power mode (default)
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-post-mode-switch-on-command-state:	String that specifies the ctrl state for sending ON commands post mode switch.
					"dsi_lp_mode" = DSI low power mode (default)
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-pan-physical-width-dimension:	Specifies panel physical width in mm which corresponds
					to the physical width in the framebuffer information.
- qcom,mdss-pan-physical-height-dimension:	Specifies panel physical height in mm which corresponds
					to the physical height in the framebuffer information.
- qcom,mdss-dsi-panel-test-pin:	Specifies the panel test gpio.
- qcom,mdss-dsi-mode-sel-gpio-state:	String that specifies the lcd mode for panel
					(such as single-port/dual-port), if qcom,panel-mode-gpio
					binding is defined in dsi controller.
					"dual_port" = Set GPIO to LOW
					"single_port" = Set GPIO to HIGH
					"high" = Set GPIO to HIGH
					"low" = Set GPIO to LOW
					The default value is "dual_port".
- qcom,mdss-tear-check-disable:		Boolean to disable mdp tear check. Tear check is enabled by default to avoid
					tearing. Other tear-check properties are ignored if this property is present.
					The below tear check configuration properties can be individually tuned if
					tear check is enabled.
- qcom,mdss-tear-check-sync-cfg-height: Specifies the vertical total number of lines.
					The default value is 0xfff0.
- qcom,mdss-tear-check-sync-init-val:	Specifies the init value at which the read pointer gets loaded
					at vsync edge. The reader pointer refers to the line number of
					panel buffer that is currently being updated.
					The default value is panel height.
- qcom,mdss-tear-check-sync-threshold-start:
					Allows the first ROI line write to an panel when read pointer is
					between the range of ROI start line and ROI start line plus this
					setting.
					The default value is 4.
- qcom,mdss-tear-check-sync-threshold-continue:
					The minimum number of lines the write pointer needs to be
					above the read pointer so that it is safe to write to the panel.
					(This check is not done for the first ROI line write of an update)
					The default value is 4.
- qcom,mdss-tear-check-start-pos:	Specify the y position from which the start_threshold value is
					added and write is kicked off if the read pointer falls within that
					region.
					The default value is panel height.
- qcom,mdss-tear-check-rd-ptr-trigger-intr:
					Specify the read pointer value at which an interrupt has to be
					generated.
					The default value is panel height + 1.
- qcom,mdss-tear-check-frame-rate:	Specify the value to be a real frame rate(fps) x 100 factor to tune the
					timing of TE simulation with more precision.
					The default value is 6000 with 60 fps.
- qcom,mdss-dsi-reset-sequence:		An array that lists the
					sequence of reset gpio values and sleeps
					Each command will have the format defined
					as below:
					--> Reset GPIO value
					--> Sleep value (in ms)
- qcom,partial-update-enabled:		String used to enable partial
					panel update for command mode panels.
					"none": partial update is disabled
					"single_roi": default enable mode, only single roi is sent to panel
					"dual_roi": two rois are merged into one big roi. Panel ddic should be able
					to process two roi's along with the DCS command to send two rois.
					disabled if property is not specified. This property is specified
					per timing node to support resolution restrictions.
- qcom,mdss-dsi-horizontal-line-idle:	List of width ranges (EC - SC) in pixels indicating
					additional idle time in dsi clock cycles that is needed
					to compensate for smaller line width.
- qcom,partial-update-roi-merge:	Boolean indicates roi combination is need
					and function has been provided for dcs
					2A/2B command. This property is specified per timing node to support
					resolution restrictions.
- qcom,dcs-cmd-by-left:			Boolean to indicate that dcs command are sent
					through the left DSI controller only in a dual-dsi configuration
- qcom,mdss-dsi-panel-hdr-enabled:      Boolean to indicate HDR support in panel.
- qcom,mdss-dsi-panel-hdr-color-primaries:
                                        Array of 8 unsigned integers denoting chromaticity of panel.These
                                        values are specified in nits units. The value range is 0 through 50000.
                                        To obtain real chromacity, these values should be divided by factor of
                                        50000. The structure of array is defined in below order
                                        value 1: x value of white chromaticity of display panel
                                        value 2: y value of white chromaticity of display panel
                                        value 3: x value of red chromaticity of display panel
                                        value 4: y value of red chromaticity of display panel
                                        value 5: x value of green chromaticity of display panel
                                        value 6: y value of green chromaticity of display panel
                                        value 7: x value of blue chromaticity of display panel
                                        value 8: y value of blue chromaticity of display panel
- qcom,mdss-dsi-panel-peak-brightness:  Maximum brightness supported by panel.In absence of maximum value
                                        typical value becomes peak brightness. Value is specified in nits units.
                                        To obtain real peak brightness, this value should be divided by factor of
                                        10000.
- qcom,mdss-dsi-panel-blackness-level:  Blackness level supported by panel. Blackness level is defined as
                                        ratio of peak brightness to contrast. Value is specified in nits units.
                                        To obtain real blackness level, this value should be divided by factor of
                                        10000.
- qcom,mdss-dsi-lp11-init:		Boolean used to enable the DSI clocks and data lanes (low power 11)
					before issuing hardware reset line.
- qcom,mdss-dsi-init-delay-us:		Delay in microseconds(us) before performing any DSI activity in lp11
					mode. This master delay (t_init_delay as per DSI spec) should be sum
					of DSI internal delay to reach fuctional after power up and minimum
					delay required by panel to reach functional.
- qcom,mdss-dsi-rx-eot-ignore:		Boolean used to enable ignoring end of transmission packets.
- qcom,mdss-dsi-tx-eot-append:		Boolean used to enable appending end of transmission packets.
- qcom,ulps-enabled:			Boolean to enable support for Ultra Low Power State (ULPS) mode.
- qcom,suspend-ulps-enabled:		Boolean to enable support for ULPS mode for panels during suspend state.
- qcom,platform-reset-gpio-always-on:	Boolean to keep display reset gpio on during suspend.
- qcom,panel-roi-alignment:		Specifies the panel ROI alignment restrictions on its
					left, top, width, height alignments and minimum width and
					height values. This property is specified per timing node to support
					resolution's alignment restrictions.
- qcom,esd-check-enabled:		Boolean used to enable ESD recovery feature.
- qcom,mdss-dsi-panel-status-command:	A byte stream formed by multiple dcs packets based on
					qcom dsi controller protocol, to read the panel status.
					This value is used to kick in the ESD recovery.
					byte 0: dcs data type
					byte 1: set to indicate this is an individual packet
						 (no chain)
					byte 2: virtual channel number
					byte 3: expect ack from client (dcs read command)
					byte 4: wait number of specified ms after dcs command
						 transmitted
					byte 5, 6: 16 bits length in network byte order
					byte 7 and beyond: number byte of payload
- qcom,mdss-dsi-panel-status-command-mode:
					String that specifies the ctrl state for reading the panel status.
					"dsi_lp_mode" = DSI low power mode
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-lp1-command:		An optional byte stream to request low
					power mode on a panel
- qcom,mdss-dsi-lp1-command-mode:	String that specifies the ctrl state for
					setting the panel power mode.
					"dsi_lp_mode" = DSI low power mode
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-lp2-command:		An optional byte stream to request ultra
					low power mode on a panel
- qcom,mdss-dsi-lp2-command-mode:	String that specifies the ctrl state for
					setting the panel power mode.
					"dsi_lp_mode" = DSI low power mode
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-nolp-command:		An optional byte stream to disable low
					power and ultra low power panel modes
- qcom,mdss-dsi-nolp-command-mode:	String that specifies the ctrl state for
					setting the panel power mode.
					"dsi_lp_mode" = DSI low power mode
					"dsi_hs_mode" = DSI high speed mode
- qcom,mdss-dsi-panel-status-check-mode:Specifies the panel status check method for ESD recovery.
					"bta_check" = Uses BTA to check the panel status
					"reg_read" = Reads panel status register to check the panel status
					"reg_read_nt35596" = Reads panel status register to check the panel
							     status for NT35596 panel.
					"te_signal_check" = Uses TE signal behaviour to check the panel status
- qcom,mdss-dsi-panel-status-read-length: Integer array that specify the expected read-back length of values
					  for each of panel registers. Each length is corresponding to number of
					  returned parameters of register introduced in specification.
- qcom,mdss-dsi-panel-status-valid-params: Integer array that specify the valid returned values which need to check
					   for each of register.
					   Some panel need only check the first few values returned from panel.
					   So: if this property is the same to qcom,mdss-dsi-panel-status-read-length,
					   then just ignore this one.
- qcom,mdss-dsi-panel-status-value:	Multiple integer arrays, each specifies the values of the panel status register
					which is used to check the panel status. The size of each array is the sum of
					length specified in qcom,mdss-dsi-panel-status-read-length, and must be equal.
					This can cover that Some panel may return several alternative values.
- qcom,mdss-dsi-panel-max-error-count:  Integer value that specifies the maximum number of errors from register
					read that can be ignored before treating that the panel has gone bad.
- qcom,dynamic-mode-switch-enabled:		Boolean used to mention whether panel supports
					dynamic switching from video mode to command mode
					and vice versa.
- qcom,dynamic-mode-switch-type:		A string specifies how to perform dynamic mode switch.
						If qcom,dynamic-mode-switch-enabled is set and no string specified, default value is
						dynamic-switch-suspend-resume.
					"dynamic-switch-suspend-resume"= Switch using suspend/resume. Panel will
						go blank during transition.
					"dynamic-switch-immediate"= Switch on next frame update. Panel will
						not go blank for this transition.
					"dynamic-resolution-switch-immediate"= Switch the panel resolution. Panel will
						not go blank for this transition.
- qcom,mdss-dsi-post-mode-switch-on-command:		Multiple dcs packets used for turning on DSI panel
					after panel has switch modes.
					Refer to "qcom,mdss-dsi-on-command" section for adding commands.
- qcom,video-to-cmd-mode-switch-commands:	List of commands that need to be sent
					to panel in order to switch from video mode to command mode dynamically.
					Refer to "qcom,mdss-dsi-on-command" section for adding commands.
- qcom,cmd-to-video-mode-switch-commands:	List of commands that need to be sent
					to panel in order to switch from command mode to video mode dynamically.
					Refer to "qcom,mdss-dsi-on-command" section for adding commands.
- qcom,send-pps-before-switch:		Boolean propety to indicate when PPS commands should be sent,
					either before or after switch commands during dynamic resolution
					switch in DSC panels. If the property is not present, the default
					behavior is to send PPS commands after the switch commands.
- qcom,mdss-dsi-panel-orientation:	String used to indicate orientation of panel
					"180" = panel is flipped in both horizontal and vertical directions
					"hflip" = panel is flipped in horizontal direction
					"vflip" = panel is flipped in vertical direction
- qcom,panel-ack-disabled: A boolean property to indicate, whether we need to wait for any ACK from the panel
			   for any commands that we send.
- qcom,mdss-dsi-force-clock-lane-hs:	Boolean to force dsi clock lanes to HS mode always.
- qcom,panel-cphy-mode:			Boolean to specify whether panel is using cphy.
- qcom,compression-mode:		Select compression mode for panel.
					"fbc" - frame buffer compression
					"dsc" - display stream compression.
					If "dsc" compression is used then config subnodes needs to be defined.
- qcom,panel-supply-entries:		A node that lists the elements of the supply used to
					power the DSI panel. There can be more than one instance
					of this binding, in which case the entry would be appended
					with the supply entry index. For a detailed description of
					fields in the supply entry, refer to the qcom,ctrl-supply-entries
					binding above.
- qcom,mdss-dsc-version:		An 8 bit value indicates the DSC version supported by panel. Bits[0.3]
					provides information about minor version while Bits[4.7] provides
					major version information. It supports only DSC rev 1(Major).1(Minor)
					right now.
- qcom,mdss-dsc-scr-version:		Each DSC version can have multiple SCR. This 8 bit value indicates
					current SCR revision information supported by panel.
- qcom,mdss-dsc-encoders:		An integer value indicating how many DSC encoders should be used
					to drive data stream to DSI.
					Default value is 1 and max value is 2.
					2 encoder should be used only if qcom,mdss-lm-split or
					qcom,split-mode with pingpong-split is used.
- qcom,mdss-dsc-slice-height:		An integer value indicates the dsc slice height.
- qcom,mdss-dsc-slice-width:		An integer value indicates the dsc slice width.
					Multiple of slice width should be equal to panel-width.
					Maximum 2 slices per DSC encoder can be used so if 2 DSC encoders
					are used then minimum slice width is equal to panel-width/4.
- qcom,mdss-dsc-slice-per-pkt:		An integer value indicates the slice per dsi packet.
- qcom,mdss-dsc-bit-per-component: 	An integer value indicates the bits per component before compression.
- qcom,mdss-dsc-bit-per-pixel:		An integer value indicates the bits per pixel after compression.
- qcom,mdss-dsc-block-prediction-enable: A boolean value to enable/disable the block prediction at decoder.
- qcom,mdss-dsc-config-by-manufacture-cmd: A boolean to indicates panel use manufacture command to setup pps
					instead of standard dcs type 0x0A.
- qcom,mdss-pps-delay-ms:		An u32 value that indicates post PPS command
								delay in milliseconds. If no value is specified, it chooses zero by default.
- qcom,display-topology:  		Array of u32 values which specifies the	list of topologies available
					for the display. A display topology is defined by a
					set of 3 values in the order:
					- number of mixers
					- number of compression encoders
					- number of interfaces
					Therefore, the array should always contain a tuple of 3 elements.
- qcom,default-topology-index:          An u32 value which indexes the topology set
					specified by the node "qcom,display-topology"
					to identify the default topology for the
					display. The first set is indexed by the
					value 0.
- qcom,mdss-dsi-ext-bridge-mode:	External bridge chip is connected instead of panel.
- qcom,mdss-dsi-dma-schedule-line:	An integer value indicates the line number after vertical active
					region, at which command DMA needs to be triggered.

Required properties for sub-nodes:	None
Optional properties:
- qcom,dba-panel:	Indicates whether the current panel is used as a display bridge
					to a non-DSI interface.
- qcom,bridge-name:			A string to indicate the name of the bridge chip connected to DSI. qcom,bridge-name
					is required if qcom,dba-panel is defined for the panel.
- qcom,adjust-timer-wakeup-ms:		An integer value to indicate the timer delay(in ms) to accommodate
					s/w delay while configuring the event timer wakeup logic.

- qcom,mdss-dsi-display-timings:	Parent node that lists the different resolutions that the panel supports.
					Each child represents timings settings for a specific resolution.
- qcom,mdss-dsi-post-init-delay:        Specifies required number of frames to wait so that panel can be functional
					to show proper display.
- qcom,mdss-dsi-video-mode:		A boolean to indicates current timing can only work in video mode.
- qcom,mdss-dsi-cmd-mode:		A boolean to indicates current timing can only work in command mode.

Additional properties added to the second level nodes that represent timings properties:
- qcom,mdss-dsi-timing-default:		Property that specifies the current child as the default
					timing configuration that will be used.
- qcom,mdss-dsi-timing-switch-command:	List of commands that need to be sent
					to panel when the resolution/timing switch happens dynamically.
					Refer to "qcom,mdss-dsi-on-command" section for adding commands.
- qcom,mdss-dsi-timing-switch-command-state:	String that specifies the ctrl state for sending resolution switch
					commands.
					"dsi_lp_mode" = DSI low power mode (default)
					"dsi_hs_mode" = DSI high speed mode

Note, if a given optional qcom,* binding is not present, then the driver will configure
the default values specified.

Example:
&mdss_mdp {
	dsi_sim_vid: qcom,mdss_dsi_sim_video {
		qcom,mdss-dsi-panel-name = "simulator video mode dsi panel";
		qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
		qcom,mdss-dsi-panel-height = <1280>;
		qcom,mdss-dsi-panel-width = <720>;
		qcom,mdss-dsi-bpp = <24>;
		qcom,mdss-dsi-pixel-packing = <0>;
		qcom,mdss-dsi-panel-destination = "display_1";
		qcom,cmd-sync-wait-broadcast;
		qcom,mdss-dsi-fbc-enable;
		qcom,mdss-dsi-panel-mode-switch;
		qcom,mdss-dsi-fbc-slice-height = <5>;
		qcom,mdss-dsi-fbc-2d-pred-mode;
		qcom,mdss-dsi-fbc-ver2-mode;
		qcom,mdss-dsi-fbc-bpp = <0>;
		qcom,mdss-dsi-fbc-packing = <0>;
		qcom,mdss-dsi-fbc-quant-error;
		qcom,mdss-dsi-fbc-bias = <0>;
		qcom,mdss-dsi-fbc-pat-mode;
		qcom,mdss-dsi-fbc-vlc-mode;
		qcom,mdss-dsi-fbc-bflc-mode;
		qcom,mdss-dsi-fbc-h-line-budget = <0>;
		qcom,mdss-dsi-fbc-budget-ctrl = <0>;
		qcom,mdss-dsi-fbc-block-budget = <0>;
		qcom,mdss-dsi-fbc-lossless-threshold = <0>;
		qcom,mdss-dsi-fbc-lossy-threshold = <0>;
		qcom,mdss-dsi-fbc-rgb-threshold = <0>;
		qcom,mdss-dsi-fbc-lossy-mode-idx = <0>;
		qcom,mdss-dsi-fbc-max-pred-err = <2>;
		qcom,mdss-dsi-h-front-porch = <140>;
		qcom,mdss-dsi-h-back-porch = <164>;
		qcom,mdss-dsi-h-pulse-width = <8>;
		qcom,mdss-dsi-h-sync-skew = <0>;
		qcom,mdss-dsi-v-back-porch = <6>;
		qcom,mdss-dsi-v-front-porch = <1>;
		qcom,mdss-dsi-v-pulse-width = <1>;
		qcom,mdss-dsi-h-left-border = <0>;
		qcom,mdss-dsi-h-right-border = <0>;
		qcom,mdss-dsi-v-top-border = <0>;
		qcom,mdss-dsi-v-bottom-border = <0>;
		qcom,mdss-dsi-border-color = <0>;
		qcom,mdss-dsi-underflow-color = <0xff>;
		qcom,mdss-dsi-bl-min-level = <1>;
		qcom,mdss-dsi-bl-max-level = < 15>;
		qcom,mdss-brightness-max-level = <255>;
		qcom,bl-update-flag = "delay_until_first_frame";
		qcom,mdss-dsi-interleave-mode = <0>;
		qcom,mdss-dsi-panel-type = "dsi_video_mode";
		qcom,mdss-dsi-te-check-enable;
		qcom,mdss-dsi-te-using-wd;
		qcom,mdss-dsi-te-using-te-pin;
		qcom,mdss-dsi-qsync-min-refresh-rate = <30>;
		qcom,mdss-dsi-te-dcs-command = <1>;
		qcom,mdss-dsi-wr-mem-continue = <0x3c>;
		qcom,mdss-dsi-wr-mem-start = <0x2c>;
		qcom,mdss-dsi-te-pin-select = <1>;
		qcom,mdss-dsi-h-sync-pulse = <1>;
		qcom,mdss-dsi-hfp-power-mode;
		qcom,mdss-dsi-hbp-power-mode;
		qcom,mdss-dsi-hsa-power-mode;
		qcom,mdss-dsi-bllp-eof-power-mode;
		qcom,mdss-dsi-bllp-power-mode;
		qcom,mdss-dsi-last-line-interleave;
		qcom,mdss-dsi-traffic-mode = <0>;
		qcom,mdss-dsi-virtual-channel-id = <0>;
		qcom,mdss-dsi-color-order = <0>;
		qcom,mdss-dsi-lane-0-state;
		qcom,mdss-dsi-lane-1-state;
		qcom,mdss-dsi-lane-2-state;
		qcom,mdss-dsi-lane-3-state;
		qcom,mdss-dsi-t-clk-post = <0x20>;
		qcom,mdss-dsi-t-clk-pre = <0x2c>;
		qcom,mdss-dsi-t-clk-pre-extend;
		qcom,mdss-dsi-stream = <0>;
		qcom,mdss-dsi-mdp-trigger = <0>;
		qcom,mdss-dsi-dma-trigger = <0>;
		qcom,mdss-dsi-panel-framerate = <60>;
		qcom,mdss-dsi-panel-timings = [7d 25 1d 00 37 33
					22 27 1e 03 04 00];
                qcom,mdss-dsi-panel-timings-8996 = [23 20 06 09 05 03 04 a0
                                23 20 06 09 05 03 04 a0
                                23 20 06 09 05 03 04 a0
                                23 20 06 09 05 03 04 a0
                                23 2e 06 08 05 03 04 a0];
		qcom,mdss-dsi-on-command = [32 01 00 00 00 00 02 00 00
					29 01 00 00 10 00 02 FF 99];
		qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
		qcom,mdss-dsi-off-command = [22 01 00 00 00 00 00];
		qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
		qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";
		qcom,mdss-dsi-pan-enable-dynamic-fps;
		qcom,mdss-dsi-pan-fps-update = "dfps_suspend_resume_mode";
		qcom,dsi-supported-dfps-list = <30 45 60>;
		qcom,dsi-supported-qsync-min-fps-list = <30 40 55>;
		qcom,min-refresh-rate = <30>;
		qcom,max-refresh-rate = <60>;
		qcom,dsi-dyn-clk-enable;
		qcom,dsi-dyn-clk-list =
			<534712320 532484352 530256384>;
		qcom,dsi-dyn-clk-type = "constant-fps-adjust-vfp";
		qcom,mdss-dsi-bl-pmic-bank-select = <0>;
		qcom,mdss-dsi-bl-pmic-pwm-frequency = <0>;
		qcom,mdss-dsi-pwm-gpio = <&pm8941_mpps 5 0>;
		qcom,5v-boost-gpio = <&pm8994_gpios 14 0>;
		qcom,mdss-pan-physical-width-dimension = <60>;
		qcom,mdss-pan-physical-height-dimension = <140>;
		qcom,mdss-dsi-mode-sel-gpio-state = "dsc_mode";
		qcom,mdss-tear-check-sync-cfg-height = <0xfff0>;
		qcom,mdss-tear-check-sync-init-val = <1280>;
		qcom,mdss-tear-check-sync-threshold-start = <4>;
		qcom,mdss-tear-check-sync-threshold-continue = <4>;
		qcom,mdss-tear-check-start-pos = <1280>;
		qcom,mdss-tear-check-rd-ptr-trigger-intr = <1281>;
		qcom,mdss-tear-check-frame-rate = <6000>;
		qcom,mdss-dsi-reset-sequence = <1 2>, <0 10>, <1 10>;
		qcom,dcs-cmd-by-left;
		qcom,mdss-dsi-lp11-init;
		qcom,mdss-dsi-init-delay-us = <100>;
		mdss-dsi-rx-eot-ignore;
		mdss-dsi-tx-eot-append;
		qcom,ulps-enabled;
		qcom,suspend-ulps-enabled;
		qcom,esd-check-enabled;
		qcom,mdss-dsi-panel-status-command = [06 01 00 01 05 00 02 0A 08];
		qcom,mdss-dsi-panel-status-command-state = "dsi_lp_mode";
		qcom,mdss-dsi-panel-status-check-mode = "reg_read";
		qcom,mdss-dsi-panel-status-read-length = <8>;
		qcom,mdss-dsi-panel-max-error-count = <3>;
		qcom,mdss-dsi-panel-status-value = <0x1c 0x00 0x05 0x02 0x40 0x84 0x06 0x01>;
		qcom,dynamic-mode-switch-enabled;
		qcom,dynamic-mode-switch-type = "dynamic-switch-immediate";
		qcom,mdss-dsi-post-mode-switch-on-command = [32 01 00 00 00 00 02 00 00
					29 01 00 00 10 00 02 B0 03];
		qcom,video-to-cmd-mode-switch-commands = [15 01 00 00 00 00 02 C2 0B
						15 01 00 00 00 00 02 C2 08];
		qcom,cmd-to-video-mode-switch-commands = [15 01 00 00 00 00 02 C2 03];
		qcom,send-pps-before-switch;
		qcom,panel-ack-disabled;
		qcom,mdss-dsi-horizontal-line-idle = <0 40 256>,
						<40 120 128>,
						<128 240 64>;
		qcom,mdss-dsi-panel-orientation = "180"
		qcom,mdss-dsi-panel-jitter = <0x8 0x10>;
		qcom,mdss-dsi-panel-prefill-lines = <0x10>;
		qcom,mdss-dsi-force-clock-lane-hs;
		qcom,compression-mode = "dsc";
		qcom,adjust-timer-wakeup-ms = <1>;
		qcom,mdss-dsi-display-timings {
			wqhd {
				qcom,mdss-dsi-cmd-mode;
				qcom,mdss-dsi-timing-default;
				qcom,mdss-dsi-panel-width = <720>;
				qcom,mdss-dsi-panel-height = <2560>;
				qcom,mdss-dsi-h-front-porch = <20>;
				qcom,mdss-dsi-h-back-porch = <8>;
				qcom,mdss-dsi-h-pulse-width = <8>;
				qcom,mdss-dsi-h-sync-skew = <0>;
				qcom,mdss-dsi-v-back-porch = <4>;
				qcom,mdss-dsi-v-front-porch = <728>;
				qcom,mdss-dsi-v-pulse-width = <4>;
				qcom,mdss-dsi-panel-framerate = <60>;
				qcom,mdss-dsi-panel-clockrate = <424000000>;
				qcom,mdss-mdp-transfer-time-us = <12500>;
				qcom,mdss-dsi-panel-timings = [E6 38 26 00 68 6E 2A 3C 2C 03 04 00];
				qcom,mdss-dsi-t-clk-post = <0x02>;
				qcom,mdss-dsi-t-clk-pre = <0x2a>;
				qcom,mdss-dsi-on-command = [05 01 00 00 a0 00 02 11 00
					05 01 00 00 02 00 02 29 00];
				qcom,mdss-dsi-on-command-state = "dsi_lp_mode";
				qcom,mdss-dsi-timing-switch-command = [
					29 00 00 00 00 00 02 B0 04
					29 00 00 00 00 00 02 F1 00];
				qcom,mdss-dsi-timing-switch-command-state = "dsi_lp_mode";
				qcom,mdss-dsi-qsync-on-commands = [15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-on-commands-state = "dsi_hs_mode";
				qcom,mdss-dsi-qsync-off-commands = [15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-off-commands-state = "dsi_hs_mode";

				qcom,mdss-dsc-slice-height = <16>;
				qcom,mdss-dsc-slice-width = <360>;
				qcom,mdss-dsc-slice-per-pkt = <2>;
				qcom,mdss-dsc-bit-per-component = <8>;
				qcom,mdss-dsc-bit-per-pixel = <8>;
				qcom,mdss-dsc-block-prediction-enable;
				qcom,mdss-dsc-config-by-manufacture-cmd;
				qcom,display-topology = <1 1 1>;
				qcom,default-topology-index = <0>;
				qcom,partial-update-enabled = "single_roi";
				qcom,panel-roi-alignment = <4 4 2 2 20 20>;
			};
		};
		qcom,panel-supply-entries {
			#address-cells = <1>;
			#size-cells = <0>;

			qcom,panel-supply-entry@0 {
				reg = <0>;
				qcom,supply-name = "vdd";
				qcom,supply-min-voltage = <2800000>;
				qcom,supply-max-voltage = <2800000>;
				qcom,supply-enable-load = <100000>;
				qcom,supply-disable-load = <100>;
				qcom,supply-pre-on-sleep = <0>;
				qcom,supply-post-on-sleep = <0>;
				qcom,supply-pre-off-sleep = <0>;
				qcom,supply-post-off-sleep = <0>;
			};

			qcom,panel-supply-entry@1 {
				reg = <1>;
				qcom,supply-name = "vddio";
				qcom,supply-min-voltage = <1800000>;
				qcom,supply-max-voltage = <1800000>;
				qcom,supply-enable-load = <100000>;
				qcom,supply-disable-load = <100>;
				qcom,supply-pre-on-sleep = <0>;
				qcom,supply-post-on-sleep = <0>;
				qcom,supply-pre-off-sleep = <0>;
				qcom,supply-post-off-sleep = <0>;
			};
		};

		qcom,dba-panel;
		qcom,bridge-name = "adv7533";
		qcom,mdss-dsc-version = <0x11>;
		qcom,mdss-dsc-scr-version = <0x1>;
		qcom,mdss-dsc-slice-height = <16>;
		qcom,mdss-dsc-slice-width = <360>;
		qcom,mdss-dsc-slice-per-pkt = <2>;
		qcom,mdss-dsc-bit-per-component = <8>;
		qcom,mdss-dsc-bit-per-pixel = <8>;
		qcom,mdss-dsc-block-prediction-enable;
		qcom,mdss-dsc-config-by-manufacture-cmd;
		qcom,display-topology = <1 1 1>,
			                <2 2 1>;
		qcom,default-topology-index = <0>;
		qcom,mdss-dsi-dma-schedule-line = <5>;
	};
};
